package cn.tedu.controllor;
/*Maven工程下创建：

需求访问链接： http://localhost:8080/car/get     可以配合前端HBuilder的a标签网页链接
得到JSON数据： {"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}
 */
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.websocket.server.PathParam;

@RestController //接收请求
@RequestMapping("car")   //请求映射，访问浏览器； 参数car为触发此类
@CrossOrigin  //添加跨域注解
public class CarController {
    @RequestMapping("get")
    public int get(){
        //System.out.println(1000);//先访问网页，后输出控制台
        return 1000;//直接返回网页显示
    }
    /*
    //方式一：直接输入网址 http://localhost:8080/car/get   //方式二：在前端设置a标签，href链接跳转.
     */
    @RequestMapping("get2")   //http://localhost:8080/car/get2
    public Car get2() {
        //保时捷718 Cayman T，红色，641000元起
        Car car = new Car();//new Car(718,"bsj","T","red",641000)
        car.setId(718);
        car.setName("保时捷");
        car.setType("Cayman T");
        car.setColor("红色");
        car.setPrice(641000.0);
        return car;
        //网页展示效果{"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}
    }
    /*
    服务器需要获取http参数进行业务处理,如何处理http请求并获取参数呢?
     */
    @RequestMapping("obj")  //浏览器网址赋值？访问http://localhost:8080/car/obj?id=100&name=BMW&color=red&price=1314
    public  Car  obj (Car c){//处理对象参数;
    System.out.println(c);//打印为空Car{id=null, name='null', type='null', color='null', price=null}可以给网址赋值？
        return c;
    }

    @RequestMapping("add")  //访问 http://localhost:8080/car/add?id=100,必须设置id的值否则报错;问号是固定拼接语法
    public  void add(int id){ //指定一个参数id（Integer id,String name）//null！！！！
        System.out.println("数据添加成功，id="+id);//Car{id=100, name='null', type='null', color='null', price=null}
    }
    @RequestMapping("save")  //http://localhost:8080/car/save?id=90&name=tony
    public void save(int id,String name) {  //两个参数；网址赋值打印
        System.out.println("数据保存成功,id="+id+",name="+name);
    }
    /*3，优化GET传参的restful方式
    //GET方式访问: http://localhost:8080/car/insert?id=1&name=张三&age=18
    //restful方式访问: http://localhost:8080/car/insert/1/张三/18
    */
    @RequestMapping("insert/{x}/{y}/{z}")  //使用 /{资源名} 获取传过来的值
    public  void insert(@PathVariable int x,   ////restful配合 @PathVariable注解 一起使用 并声明变量类型
                        @PathVariable  String y,
                        @PathVariable int z
                        ){
        System.out.println("数据插入成功,id="+x+",name="+y+",age="+z);//输出三个参数变量
    }


}
